/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pojo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author Vanessinha
 */
@Entity
@Table(name = "tb_filme")
public class Filme implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "fil_codigo")
    private Long filCodigo;
    @Size(max = 255)
    @Column(name = "fil_ano")
    private String filAno;
    @Size(max = 255)
    @Column(name = "fil_diretor")
    private String filDiretor;
    @Size(max = 255)
    @Column(name = "fil_duracao")
    private String filDuracao;
    @Size(max = 255)
    @Column(name = "fil_resumo")
    private String filResumo;
    @Size(max = 255)
    @Column(name = "fil_sensura")
    private String filSensura;
    @Size(max = 255)
    @Column(name = "fil_titulo")
    private String filTitulo;
    @ManyToMany(mappedBy = "filmes")
    private List<Ator> atores;
    @JoinColumn(name = "fil_codProdutora", referencedColumnName = "pro_codigo")
    @ManyToOne
    private Produtora filcodProdutora;
    @JoinColumn(name = "fil_codCategoria", referencedColumnName = "cat_codigo")
    @ManyToOne
    private Categoria filcodCategoria;
   
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "exe_codFilme", fetch= FetchType.EAGER)
    private List<Exemplar> exemplares =  new ArrayList<>();
    private Double fil_preco_venda;
    private Double fil_preco_locacao;

    public Filme() {
    }

    public Double getFil_preco_locacao() {
        return fil_preco_locacao;
    }

    public void setFil_preco_locacao(Double fil_preco_locacao) {
        this.fil_preco_locacao = fil_preco_locacao;
    }

    public Double getFil_preco_venda() {
        return fil_preco_venda;
    }

    public void setFil_preco_venda(Double fil_preco_venda) {
        this.fil_preco_venda = fil_preco_venda;
    }

    public Filme(Long filCodigo) {
        this.filCodigo = filCodigo;
    }

    public Long getFilCodigo() {
        return filCodigo;
    }

    public void setFilCodigo(Long filCodigo) {
        this.filCodigo = filCodigo;
    }

    public String getFilAno() {
        return filAno;
    }

    public void setFilAno(String filAno) {
        this.filAno = filAno;
    }

    public String getFilDiretor() {
        return filDiretor;
    }

    public void setFilDiretor(String filDiretor) {
        this.filDiretor = filDiretor;
    }

    public String getFilDuracao() {
        return filDuracao;
    }

    public void setFilDuracao(String filDuracao) {
        this.filDuracao = filDuracao;
    }

    public String getFilResumo() {
        return filResumo;
    }

    public void setFilResumo(String filResumo) {
        this.filResumo = filResumo;
    }

    public String getFilSensura() {
        return filSensura;
    }

    public void setFilSensura(String filSensura) {
        this.filSensura = filSensura;
    }

    public String getFilTitulo() {
        return filTitulo;
    }

    public void setFilTitulo(String filTitulo) {
        this.filTitulo = filTitulo;
    }

    public Produtora getFilcodProdutora() {
        return filcodProdutora;
    }

    public List<Ator> getAtores() {
        return atores;
    }

    public void setAtores(List<Ator> atores) {
        this.atores = atores;
    }

    public void setFilcodProdutora(Produtora filcodProdutora) {
        this.filcodProdutora = filcodProdutora;
    }

    public Categoria getFilcodCategoria() {
        return filcodCategoria;
    }

    public void setFilcodCategoria(Categoria filcodCategoria) {
        this.filcodCategoria = filcodCategoria;
    }

    public List<Exemplar> getExemplares() {
        return exemplares;
    }

    public void setExemplares(List<Exemplar> exemplares) {
        this.exemplares = exemplares;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (filCodigo != null ? filCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Filme)) {
            return false;
        }
        Filme other = (Filme) object;
        if ((this.filCodigo == null && other.filCodigo != null) || (this.filCodigo != null && !this.filCodigo.equals(other.filCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return filTitulo;
    }
}
